/*
  1. Function.prototype.bind(obj) :
    * 作用: 将函数内的this绑定为obj, 并将函数返回
  2. 面试题: 区别bind()与call()和apply()?
    * 都能指定函数中的this
    * call()/apply()是立即调用函数
    * bind()是将函数返回
*/
function fun(age) {
  this.name = 'LeBron'
  this.age = age
  console.log('aaaa')
}
var obj = {}
//fun.bind(obj)(37) //将函数内的this绑定为obj, 并将函数返回
fun.bind(obj, 37)() //可同时传入实参
console.log(obj.name, obj.age)

console.log('---------------------------')

function fun1() {
  console.log(this.name)
  console.log('fun1...')
}
var obj1 = {name: 'limi'}
//将函数内的this绑定为obj, 并将函数返回（类似回调函数）
//此时this.name有值，加上()表示调用
fun1.bind(obj1)()
fun1.call() //立即调用函数
fun1.apply() //立即调用函数